package view;

import java.awt.Color;
import java.awt.Component;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JFrame;
import javax.swing.JPanel;

import model.Constants;
import model.Presenteerbaar;
import controller.MenuController;
import controller.PresentatieController;

public class HoofdScherm extends JFrame implements Observer {

	
	private static final long serialVersionUID = 1L;
	private static HoofdScherm instance = null; 
	private JPanel presentatieCanvas = new JPanel();
	private String titelPresentatie=null;
	
	public String getTitelPresentatie() {
		return titelPresentatie;
	}

	public void setTitelPresentatie(String titelPresentatie) {
		this.titelPresentatie = titelPresentatie;
		this.setTitle("JabberPoint Extended: " +titelPresentatie);
	}

	public void maak() {
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setSize(Constants.HOOFDVENSTER_BREEDTE,
				Constants.HOOFDVENSTER_HOOGTE);
		this.setLocationRelativeTo(null);

		
		presentatieCanvas.setSize(Constants.HOOFDVENSTER_BREEDTE,
				Constants.HOOFDVENSTER_HOOGTE);
		this.getContentPane().add(presentatieCanvas);
		
	}
	
	public JPanel getPresentatieCanvas() {
		return presentatieCanvas;
	}

	public void setPresentatieCanvas(JPanel presentatieCanvas) {
		this.presentatieCanvas = presentatieCanvas;
	}

	public static HoofdScherm getInstance(){
		  if(instance == null) {
		         instance = new HoofdScherm();
		         MenuController menuController=MenuController.getInstance();
		      }
		      return instance;
	}
	
	public void removeAll(){
	   presentatieCanvas.removeAll();
	}
	
	public void addComponent(Component component){
		presentatieCanvas.add(component);
	}
	
	private HoofdScherm(){
		maak();
	}
	

	@Override
	public void update(Observable o, Object arg) {
		Presenteerbaar presentatie = (Presenteerbaar)o;
		removeAll();
		addComponent(presentatie.toon());
		revalidate();
		
	}
}
